import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  //公共数据源
  state: {
    count: 0
  },
  //对Store中的数据处理成新的数据   类似于计算属性  Store变化，Getter也跟着变化
  getters: {
    showCount: state => {
      return '当前的count是：' + state.count
    }
  },
  //变更Store中的数据  第一个参数永远都是state    且不能执行异步操作
  mutations: {
    add(state, step) {
      state.count += step
    }
  },
  //执行异步操作的函数   不能直接修改state中的数据  第一个参数永远都是step
  actions: {
    addAsync() {
      setTimeout((context, step) => {
        context.commit('add')
      }, 1000)
    }
  },
  modules: {
  }
})
